#ifndef __TASK_QUEUE_H__
#define __TASK_QUEUE_H__

#include <my_header.h>

//任务队列节点
typedef struct taskNode_s {
    int client_fd; //客户端套接字
    struct taskNode_s *pNext;
}taskNode_t, *ptaskNode_t;

//任务队列
typedef struct taskQueue_s {
    int size;  //队列大小
    ptaskNode_t pFront; //队头
    ptaskNode_t pRear; //队尾

    pthread_cond_t cond; //条件变量
    pthread_mutex_t mutex; //互斥锁
    int exit_flag; //线程退出标志（0-不退出 1-退出）
}taskQueue_t, *ptaskQueue_t;

int init_TaskQueue(ptaskQueue_t pQueue); //初始化任务队列
int en_TaskQueue(ptaskQueue_t pQueue, ptaskNode_t pNew);//入队
int de_TaskQueue(ptaskQueue_t pQueue, ptaskNode_t *pOut);//得到队头元素，同时出队

#endif


